<!-- IE_Naumen.htm
Данная страничка выполняет:
	поиск на текущей странице таблицы с запросами Наумена (по id таблицы),
	поиск колонок с названиями "Название контрагента/Привязка к контрагенту",  "Полное описание запроса",
	формирование по фамилии-имени предположительного логина пользователя,
	добавляет в ячейку с контрагентом ссылку на фото пользователя и на вызов Lync-чат (по предполагаемому логину).
(запросы к AD не выполняются).
    Если таблица запросов отсортирована по контраагенту, то в первом запросе указывается количество последующих запрососв
контргаента, а сами строки с этими запросами модифицируются стилем бордюра и серым цветом текста. Фото контрагента выводится
только в верхнем запросе.
    Если в тексте описания запроса встречается слово "rebranchig", то оно выделяется желтым фоном.
    Если в тексте описания запроса встречается фраза "Standard Office Package (MS Word Excel etc): Revoke Account" ,то 
фраза меняется на "REVOKE Account" и выделяется красным фоном.
    Если в тексте описания запроса встречается слово из массива описанией (arrDescOnlyLnk) ячейка описание выделяется серым фоном.
    Если в тексте типа запроса встречается слово "Запрос на изменение" ячейка тип запроса выделяется светложелтым (antiquewhite) фоном.

Меню вызова этой страницы настраивается запуском скрипта - "IE_Naumen_setup.vbs". 
-->

<html style="width: 300px; height: 160px; margin: 1px; status:1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Author" content="Roman.Gerashchenko@otpbank.com.ua">
<meta name="Description" content="Patch Naumen-Page">

<head>
<title>IE_Naumen ...</title>
</head>

<!-- ========================================= HTML ===========================================  -->

<BODY BGCOLOR="#C0C0C0" onload="Window_OnLoad();">
<small>
<i>&nbsp;IE_Naumen v1.7 by 08.01.2013 &nbsp;&copy; R.G.</i>
</small>
<!-- ====================================== VBScript ==========================================  -->
<script language="VBScript">


Function uf_writeFile(pNammFile, pContentFile)
	Dim fso
	Set fso = CreateObject("Scripting.FileSystemObject")
	
	Set fspo = fso.OpenTextFile(pNammFile, 2, true)
	fspo.WriteLine pContentFile
	fspo.Close
	Set fspo = Nothing

End Function

'/-/-/-/-/-/-/-/-/-/ Вспом. функции - для вызова из JScript некоторых возможностей VBScript /-/-/-/-/-/-/'
Function vb_Trim (ps)
	vb_Trim = RTrim( LTrim(ps) ) 'почему-то одной функции Trim() не достаточно!:(' 
End Function 

Function vb_Replace(ps1, ps2, ps3)
	vb_Replace = Replace(ps1, ps2, ps3)
End Function 

Function vb_CStr(pNumExp)
	vb_CStr = CStr(pNumExp)
End Function 


</script>

<!-- =================================== JScript ==============================================  -->
<script language="JavaScript">

var parentwin = external.menuArguments;     // получаем объект окна
var doc;
doc = parentwin.document;               // получаем объект документа

var doc_title; // заголовок
var doc_URL;   // ссылка окна
var doc_html;  // содержимое родительского окна (для поиска описания запроса в Наумен)

doc_title = doc.title; // получаем заголовок
doc_URL = doc.URL; // получаем ссылку окна
doc_html = doc.body.innerHTML; // содержимое родительского окна (для поиска описания запроса в Наумен)

var oTbl; // объект таблицы с запросами
var iCol = -1 ; // номер колонки с контрагентами

	
// отрабатывает при открытии окна - получение значений из "вызвавшей" страницы
function Window_OnLoad()
{
	
//сохраняем код родительского окна -- 4 debug.......
// uf_writeFile("c:\\commonx\\d_inner.html", doc_html); 
// uf_writeFile("c:\\commonx\\d_outer_1.html", doc.body.outerHTML);
// uf_writeFile("c:\\commonx\\d_head_inner_1.html", doc.head.innerHTML);

var iNeedAddScript = 0; // сменим на 1 в случае добавления чего-то своего на страницу - признак необходимости добавления своего скрипта
var sLogin = ""; // Сформированный логин
var sFirstLastName = ""; // Сформированный логин

var arrDescOnlyLnk = new Array(
	"Payments: Create Account", 
	"SAKR & Night Cash: Create Account", 
	"Easy Retail: Create Account", 
	"Cash Currency Exchange: Create Account", 
	"Cash: Create Account", 
	"CashRep: Create Account", 
	"Wizard: Create Account",
	"Reference: Create Account",
	"HO Reports: Create Account",
	"Golden Eye: Create Account"
);

// alert (arrDescOnlyLnk.length);

try {
	// id таблицы с запросами отдела
	oTbl = doc.getElementById('MyServiceCalls.MyGroupsServiceCalls.ServiceCalls.ServiceCallsActionContainer.ObjectListReport.tableListAndButtons.ServiceCallsservicecalllist_report');

	// id таблицы с запросами сотрудника
	if(oTbl==null) 
	oTbl = doc.getElementById('MyServiceCalls.EmployeeServiceCalls.ServiceCalls.ServiceCallsActionContainer.ObjectListReport.tableListAndButtons.ServiceCallsservicecalllist_report');

	if(oTbl==null) 
	oTbl = doc.getElementById('MySolvedServiceCalls.ServiceCalls.ServiceCallsActionContainer.ObjectListReport.tableListAndButtons.ServiceCallsservicecalllist_report');
	

	if(oTbl==null) { 
		// Таблицы с запросами не обнаружены, пробуем искать ячейку с контактом, если эта страница - "раскрытый" запрос
		var oClientName = doc.getElementById('ServiceCall.Container.Column_2.CustomerProps.client_name');
		if(oClientName==null) alert ("Не найден ни один из вариантов объектов таблицы с запросами!"); {
			s = oClientName.innerHTML;
			if(s.indexOf('<BR>')>0) {
				// если в ячейке есть перевод строки - значит скрипт уже эту страницу обрабатывал
			} else {
				sLogin = uf_getLogin_fromLastFirstName( s );
				sFirstLastName = uf_getFirstLastname ( s );
				var sPictMiddle = uf_createSrc_MiddlePict ( sLogin );
				var sPictLarge = uf_createSrc_LargePict ( sLogin );
				var sImgHTML = uf_html_Photo ( sPictMiddle, sPictLarge );
				var sLyncHTML = uf_html_Lync ( sLogin );
			
				oClientName.innerHTML = oClientName.innerHTML + "<BR>" + sImgHTML + "&nbsp;" + sLyncHTML + "&nbsp;" + uf_html_test( sFirstLastName );
				
				iNeedAddScript = 1;
			
			}
			
		}
	}

	else {
		var s; iCol_NameAgent = 0; iCol_Descript = 0; iCol_Type = 0;
		// номера интересующих колонок
		for (i=0; i<oTbl.rows[0].cells.length; i++) {
			s = oTbl.rows[0].cells[i].innerHTML;
			var pos;
			
			// Сортировка может быть включена по одному из этих полей и обычно только одно из них и присутствует:
			pos = s.indexOf('Название контрагента'); if(pos>0) iCol_NameAgent = i;
			pos = s.indexOf('Привязка к контрагенту'); if(pos>0) iCol_NameAgent = i;
			
			// Для последующего контроля содержимого ячейки с описанием запроса (подсветкой ребренчевых запросов)
			pos = s.indexOf('Полное описание запроса'); if(pos>0) iCol_Descript = i;
			
			// Для последующего контроля содержимого ячейки с типом запроса (подсветкой запросов изменения прав)
			pos = s.indexOf('Тип запроса'); if(pos>0) iCol_Type = i;
		}

		// при обработке каждой строки будем заносить фото (и вызов через Link) текущего пользователя
		// использовать значение - добавляем к названию контрагента предыдущей строки при его смене на следующей строке
		var sPhotoOfPrevRow = ""; 
		
		var sAgent_cur = "";         // название контрагента текущей строки
		var sAgent_prev = "_first_"; // название контрагента предыдущей строки
		var iAgent_prev = 0;        // количество запросов предыдущего контрагента
		if (iCol_NameAgent>0) {
			for (i=oTbl.rows.length - 1; i>=0; i--) { // обработка строк таблицы - от нижних к верхним
				if (i>0) s = oTbl.rows[i].cells[iCol_NameAgent].innerHTML;
				else s = ""; // уже была обработана самая верхняя строка - осталось симитировать смену контрагента 
				sAgent_cur = s;
				
				if(s.indexOf('<BR>')>0) break; // если в ячейке есть перевод строки - значит скрипт уже эту страницу обрабатывал
				
				if (sAgent_cur == sAgent_prev) {
					iAgent_prev++;
				} else {
					if (iAgent_prev > 1) { // предыдущий агент повторялся несколько раз
						// добавляем отображение количества сгруппированных запросов, меняем бордюр на "выпуклый"
						oTbl.rows[i + 1].cells[iCol_NameAgent].innerHTML = 
							oTbl.rows[i + 1].cells[iCol_NameAgent].innerHTML + 
							"&nbsp;<strong>" + iAgent_prev + "</strong>&nbsp;";
						oTbl.rows[i+1].cells[iCol_NameAgent].style.border="outset thin";
						// в остальных снизу строках контрагента - меняем размер шрифта, цвет и бордюр
						for (var j=i+2;  j<i+iAgent_prev+1; j++) {
							oTbl.rows[j].cells[iCol_NameAgent].style.font="normal normal 80%/80% arial";
							oTbl.rows[j].cells[iCol_NameAgent].style.color="gray";
							oTbl.rows[j].cells[iCol_NameAgent].style.border="inset thin"; // граница - тонкая "впадина"
						}
					}
					if (iAgent_prev >= 1) { 
						// предыдущий агент либо повторялся несколько раз, либо был всего раз, но таки был - вывод его фото
						oTbl.rows[i+1].cells[iCol_NameAgent].innerHTML = 
							oTbl.rows[i+1].cells[iCol_NameAgent].innerHTML + sPhotoOfPrevRow
					}
					sAgent_prev = sAgent_cur; iAgent_prev = 1;
				}
				
				if (i>0) {
					sLogin = uf_getLogin_fromLastFirstName( s );
					var sPictSmall = uf_createSrc_SmallPict ( sLogin );
					var sPictLarge = uf_createSrc_LargePict ( sLogin );
					var sImgHTML = uf_html_Photo ( sPictSmall, sPictLarge );
					var sLyncHTML = uf_html_Lync ( sLogin );
					if (iCol_Descript>0) {
						var sDesc = oTbl.rows[i].cells[iCol_Descript].innerHTML;
						// Если теккст описания присутствует в массиве описаний arrDescOnlyLnk, то выделяем описание фоном
						for (var iArr=0; iArr<arrDescOnlyLnk.length; iArr++ ) {
							pos = sDesc.indexOf( arrDescOnlyLnk[iArr] );
							if(pos>0) oTbl.rows[i].cells[iCol_Descript].style.background="lightgray";
						}
						sDesc = vb_Replace( sDesc, "Rebranching", "<span style=\"background-color: yellow;\">REBRANCHING</span>");
						sDesc = vb_Replace( sDesc, "Standard Office Package (MS Word Excel etc): Revoke Account", "<span style=\"background-color: hotpink;\">REVOKE Account</span>");
						if (sDesc!=oTbl.rows[i].cells[iCol_Descript].innerHTML) 
							oTbl.rows[i].cells[iCol_Descript].innerHTML = sDesc;
					}
					if (iCol_Type>0) { // Меняем фон ячеек: Тип_запроса="Запрос на изменение"
						var sType = oTbl.rows[i].cells[iCol_Type].innerHTML;
						pos = sType.indexOf('Запрос на изменение'); 
						if(pos>0) oTbl.rows[i].cells[iCol_Type].style.background="antiquewhite";
					}
					oTbl.rows[i].cells[iCol_NameAgent].innerHTML = s + "<BR>" // добавленный перевод каретки - признак нашей обработки
					sPhotoOfPrevRow = sImgHTML + "&nbsp;" + sLyncHTML;
					
					// sPhotoOfPrevRow = sImgHTML + "&nbsp;" + sLyncHTML // + "&nbsp;" + uf_html_testKuku();
					// sPhotoOfPrevRow = sImgHTML + "&nbsp;" + sLyncHTML  + "&nbsp;" + 
						// "<a href='#' onClick=\"" +
						// "alert('kuku-1');" +
						// "var cookie = document.cookie;" +
						// "alert(cookie);" +
						// "alert('kuku-2');" +
						// "cookie = 'kuku1=kuku2;';" +
						// "alert(cookie);" +
						// "document.cookie = cookie;" +
						// "cookie = 'kuku1=kuku2;';" +
						// "alert(cookie);" +
						// "alert('kuku-3');" +
						// "\">myTest</a>"
				}
			}
		}
	}
	
} catch(e) { alert("name:" + e.name 
		+ "\nextra:" + e.extra 
		+ "\nstack:" + e.stack 
		+ "\nmessage:" + e.message
		); 
	}

if (iNeedAddScript>0) {
	// ----------------------------------------------------------------------
	// Добавляем в тело вызвавшей страницы свой скрипт.

	// var script   = doc.createElement("script"); 
	// script.type  = "text/javascript"; 
	// script.src   = "";    // use this for linked script 
	// script.text  = "\nfunction kuku(){ alert('test2'); }\n"               // use this for inline script 
	// doc.body.appendChild(script); 
	// // ----------------------------------------------------------------------
	// var script2   = doc.createElement("script"); 
	// script2.type  = "text/vbscript"; 
	// script2.src   = "";
	
	// script2.text  = '\nFunction ufAdded_CompAction( pParams )\n'+
// 'On Error Resume Next\n'+
// 'pParams = Replace(pParams," ",".")\n'+
// 'Msgbox(pParams)\n'+
// 'sTime = Replace(CStr(Now())," ","_")\n'+
// 'sTime = Replace(sTime,".","")\n'+
// 'sTime = Replace(sTime,":","")\n'+
// 'Dim sCmdLine : sCmdLine = "start /DC:\\Common\\RemAS_HTA Comp_Action.hta"\n'+
// 'Val = pParams\n'+
// 'Val = "/user:" & Val\n'+
// 'Val = sCmdLine & " /time:" & sTime & " " & Val\n'+
// 'Dim pTitle, pURL, pBody\n'+
// '\'pTitle=document.title : Msgbox(pTitle)\n'+
// 'pTitle="Naumen"\n'+
// 'Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")\n'+
// '\'MsgBox "err:" & vbCr & vbCr & vbCr & Err.Description, vbCritical, "Error_vbs"\n'+
// 'Set fspo=FSO.OpenTextFile("c:\\common\\IE_Naumen\\test.cmd", 2, True)\n'+
// '\'MsgBox "err:" & vbCr & vbCr & vbCr & Err.Description, vbCritical, "Error_vbs"\n'+
// 'fspo.WriteLine "reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\IE_CompAction /v doc_title /f /t REG_SZ /d """ & pTitle & """"\n'+
// 'fspo.WriteLine "reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\IE_CompAction /v start_cmd /f /t REG_SZ /d """ & Val & """"\n'+
// 'fspo.WriteLine "reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\IE_CompAction /v DT_created /f /t REG_SZ /d """ & sTime & """"\n'+
// 'fspo.Close\n'+
// 'Set fspo = Nothing\n'+
// 'Set WshShell = CreateObject("WScript.Shell")\n'+
// 'WshShell.Run "c:\\common\\IE_Naumen\\test.cmd", 1\n'+
// '\'MsgBox "err:" & vbCr & vbCr & vbCr & Err.Description, vbCritical, "Error_vbs"\n'+
// 'Set WshShell = Nothing\n'+
// "End Function\n"

	// doc.body.appendChild(script2); 
}

	// uf_writeFile("c:\\common\\d_outer_2.html", doc.body.outerHTML); ////////////// debug

 	window.close();
}

function uf_getLogin_fromLastFirstName( pText ) {
	var ret = vb_Trim(pText);
	var aFIO = ret.split(" ");
	ret = aFIO[0] + aFIO[1].substring(0,1);
	return ret;
}

function uf_getFirstLastname( pText ) {
	var ret = vb_Trim(pText);
	var aFIO = ret.split(" ");
	ret = aFIO[1] + " " + aFIO[0];
	return ret;
}

function uf_createSrc_SmallPict ( pLogin ) {
	return "http://otpplanet/mysite/User%20Photos/Profile%20Pictures/UAALAN01_" + pLogin + "_SThumb.jpg"
}

function uf_createSrc_MiddlePict ( pLogin ) {
	return "http://otpplanet/mysite/User%20Photos/Profile%20Pictures/UAALAN01_" + pLogin + "_MThumb.jpg"
}

function uf_createSrc_LargePict ( pLogin ) {
	return "http://otpplanet/mysite/User%20Photos/Profile%20Pictures/UAALAN01_" + pLogin + "_LThumb.jpg"
}

function uf_html_Photo ( pPictSmall, pPictLarge ) {
	return "<IMG src='" + pPictSmall + "' alt=';-)' onclick='window.open(\"" + pPictLarge + 
				"\",\"Photo\",\"height=200,width=100\")' style='cursor: hand;' title='View Photo'>";
}

function uf_html_Lync ( pLogin ) {
	return "<a href='#' style='color: dark;' " +
				"onClick='var newWin=window.open(\"sip:" + pLogin + 
			"@otpbank.com.ua\",\"\",\"height=100,width=100\"); newWin.close(); return false;' title='Start Lync'>" +
			"<span style='font-family: Wingdings; font-size: 17;'>7</span></a>"
}

// function uf_html_test ( pText ) {
	// return "<a href='#' style='color: dark;' onClick=\"parent.ufAdded_CompAction('" + pText + "');\">test</a>"
// }

function uf_html_testKuku ( pText ) {
	// return "<a href='#' style='color: dark;' onClick=\"parent.kuku();\">testKuku</a>"
	// return "<a href='#' style='color: dark;' onClick=\"alert();\">testKuku</a>"
	// return "<a href='#' style='color: dark;' onClick=\"alert();\">testKuku</a>"
}

</script>
</body>
</html>
